package es.uned.etsii.si3.taller;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import java.sql.SQLException;

@DatabaseTable(tableName = "secciones")
public
class Seccion extends Persistente {
	public static final String ID_FIELD_NAME = "id";
	public static final String ID_TALLER_FIELD_NAME = "id_taller";
	public static final String ID_TIPO_FIELD_NAME = "id_tipo";
	@DatabaseField(generatedId = true, columnName = ID_FIELD_NAME)
	int id;
	@DatabaseField(foreign = true, maxForeignAutoRefreshLevel=5, foreignAutoRefresh=true, columnName = ID_TALLER_FIELD_NAME)
	Taller taller;
	@DatabaseField(foreign = true, maxForeignAutoRefreshLevel=5, foreignAutoRefresh=true, columnName = ID_TIPO_FIELD_NAME)
	TipoSeccion tipoSeccion;

	/** 
	 * Crea un objeto Sección asociado a un taller y a un tipo de sección
	 * @param taller
	 * @param tipoSeccion
	 * @return la sección deseada
	 * @throws SQLException
	 */
	public
	static Seccion crear(Taller taller,
			TipoSeccion tipoSeccion) throws SQLException
	{
		Seccion seccion = new Seccion();

		seccion.setTaller(taller);
		seccion.setTipoSeccion(tipoSeccion);
		getClassDao(Seccion.class).create(seccion);

		return seccion;
	}

	public
	Seccion() {
		// ORM Lite necesita un constructor por defecto
	}

	/** Getters y setters
	 *  
	 */
	public int         getId()          { return id; }
	public Taller      getTaller()      { return taller; }
	public TipoSeccion getTipoSeccion() { return tipoSeccion; }

	public
	void setTaller(Taller taller) {
		this.taller = taller;
	}

	public
	void setTipoSeccion(TipoSeccion tipoSeccion) {
		this.tipoSeccion = tipoSeccion;
	}
}